﻿<?php 
function toXML($file)
{
  // 1. Lendo o arquivo
  $cont = file_get_contents($file);
  // 2. Separando e removendo o cabeçalho
  $bline = strpos($cont,"<OFX>");
  $head = substr($cont,0,$bline-2);
  $ofx = substr($cont,$bline-1);
  // 3. Examinar tags que possam estar terminadas de forma imprópria
  $ofxx = $ofx;
  $tot=0;
  while ($pos = strpos($ofxx,'<')) {
    $tot++;
    $pos2 = strpos($ofxx,'>');
    $ele = substr($ofxx,$pos+1,$pos2-$pos-1);
    if (substr($ele,0,1) =='/') $sla[] = substr($ele,1);
    else $als[] = $ele;
    $ofxx = substr($ofxx,$pos2+1);
  }
  $adif = array_diff($als,$sla);
  $adif = array_unique($adif);
  $ofxy = $ofx;
  // 4. Terminar aquelas que precisam de terminação
  foreach ($adif as $dif) {
    $dpos = 0;
    while ($dpos = strpos($ofxy,$dif,$dpos+1)) {
      $npos = strpos($ofxy,'<',$dpos+1);
      $ofxy = substr_replace($ofxy,"</$dif>\n<",$npos,1);
      $dpos = $npos+strlen($ele)+3;
    }
  }
  // 5. Lidando com caracteres especiais
  $ofxy = str_replace('&','&amp;',$ofxy);
  $ofxy = str_replace(',','.',$ofxy);
  file_put_contents("../xml/extrato.xml", $ofxy);
  return $ofxy;
}

function Extrato($file){
	// testar ofx
  $xml = new SimpleXMLElement($file);
  // Separando agencia, conta, saldo e data do extrato
  $nc = trim($xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->BANKACCTFROM->ACCTID);
  $agencia = substr($nc, 0, 4);
  $conta = substr($nc, 4, 12);
  $bal = trim($xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->LEDGERBAL->BALAMT);
  $dat = $xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->LEDGERBAL->DTASOF;
  $data = strtotime(substr($dat,0,8));
  $datb = date('Y/m/d',$data);
  $e = array(array("agencia"=>$agencia, "conta"=>$conta, "saldo"=>$bal, "datae"=>$datb));
  // Apontar para a array de transações e pegar os detalhes de cada uma
  $trans = $xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->BANKTRANLIST->STMTTRN;

  foreach ($trans as $tran) {	    	
    $trandate = trim($tran->DTPOSTED);
    $tdate = date("Y/m/d",strtotime(substr($trandate,0,8)));
    $tranamt = trim($tran->TRNAMT);
    $trancrdr = trim($tran->TRNTYPE);
	$memo = trim($tran->MEMO);	
	$doc = trim($tran->CHECKNUM);
	array_push($e, array("data"=>$tdate, "ndoc"=>$doc, "memo"=>$memo, "valor"=>$tranamt));	
  }
  return $e;
}
?>